<?php
class FormFieldsValidatorSchema extends sfValidatorSchema
{
    protected function configure($options = array(), $messages = array())
    {
        $this->addMessage('CampoClave', 'Uno de los campos del formulario debe ser marcado como clave del formulario.');
    }

    protected function doClean($values)
    {
        $errorSchema = new sfValidatorErrorSchema($this);

        $key = false;
        foreach($values as $key => $value)
        {
            if ($value['is_key'] == 'on')
            {
                $key = true;
                break;
            }
        }

        if(!$key)
        {
            $errorSchema->addError(new sfValidatorError($this, 'CampoClave'), 'CampoClave');
        }
        
        if (count($errorSchema))
        {
            throw new sfValidatorErrorSchema($this, $errorSchema);
        }
        
        return $values;
    }
}